home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #1 / Amiga Plus CD - 1997 - No. 01.iso / pd / sonstiges / spontimag10 / owindow.cpp < prev    next >
C/C++ Source or Header  |  1996-10-14  |  3KB  |  156 lines

  1. /****** OWindow.cpp ***********************************************
  2. *
  3. *   PROGRAM
  4. *      OWindow
  5. *
  6. *   CONTENTS
  7. *      C++-class for creating a simple window, and parsing messages.
  8. *
  9. *   AUTHOR
  10. *      Georg Pfundt
  11. *
  12. *   COPYRIGHT
  13. *      © by Georg Pfundt   14-OCT-1996
  14. *
  15. *   LANGUAGE
  16. *      ANSI-C
  17. *
  18. *   TRANSLATOR
  19. *      SAS-C V6.55
  20. *
  21. *   HISTORY
  22. *      1.0, GeP, 14-OCT-1996, first version
  23. *      <Version, Autor, Datum, Bemerkung>
  24. *
  25. *   SUPPORT
  26. *      None.
  27. *
  28. *   IMPORTS
  29. *      None.
  30. *
  31. *   BUGS
  32. *      None known.
  33. *
  34. *   ADDRESS
  35. *      Georg Pfundt, Im Oberviertel 18, 76229 Karlsruhe, Germany
  36. *
  37. *   PHONE
  38. *      +49 (0)721/481591
  39. *      E-Mail: gp@ict.fhg.de
  40. *
  41. *   UPDATE
  42. *
  43. ********************************************************************
  44. * TABSIZE=2
  45. */
  46.  
  47.  
  48. #include "OWindow.h"
  49.  
  50.  
  51. // Define constructor
  52. OWindow::OWindow(const char *name,const ULONG width, const ULONG height,
  53.                const ULONG xofs, const ULONG yofs)
  54. {
  55.   // Open a window with taglist
  56.   this->window = OpenWindowTags(NULL,
  57.             WA_Width,width,
  58.             WA_Height,height,
  59.             WA_Left,xofs,
  60.             WA_Top,yofs,
  61.             WA_MinWidth, 100L,
  62.             WA_MinHeight, 80L,
  63.             WA_MaxWidth, -1L,
  64.             WA_MaxHeight, -1L,
  65.             WA_Title,(ULONG)name,
  66.             WA_Flags, WFLG_SMART_REFRESH | WFLG_DRAGBAR | WFLG_CLOSEGADGET |
  67.                                 WFLG_DEPTHGADGET,
  68.             WA_IDCMP, IDCMP_CLOSEWINDOW,
  69.       WA_AutoAdjust,TRUE,
  70.             TAG_END);
  71.  
  72.   // Set Rastport
  73.   this->RP=NULL;
  74.  
  75.   if (this->window)
  76.     RP=this->window->RPort;
  77. }
  78.  
  79.  
  80. // Destructor
  81. OWindow::~OWindow(void)
  82. {
  83.   // if there are any open messages reply it!
  84.   struct IntuiMessage *imsg;
  85.   while ((imsg = (struct IntuiMessage*)GetMsg(this->window->UserPort)) != NULL)
  86.     ReplyMsg((struct Message*)imsg);
  87.  
  88.  
  89.   if (this->window)
  90.     CloseWindow(this->window);
  91.   this->window = NULL;
  92. }
  93.  
  94.  
  95.  
  96. // Get and parse Message
  97. // This function parses known messages or returns OW_None
  98. OWindow::OW_Event
  99. OWindow::ParseMessage(struct IntuiMessage *imsg)
  100. {
  101.     OW_Event result;
  102.  
  103.     // Parse Message Class
  104.     switch (imsg->Class)
  105.     {
  106.         case IDCMP_CLOSEWINDOW:
  107.             result = OW_Close;
  108.             break;
  109.     default:
  110.       result = OW_None;
  111.     }
  112.  
  113.   return result;
  114. }
  115.  
  116.  
  117.  
  118. // Check for a new message, parse it, reply it and return
  119. OWindow::OW_Event
  120. OWindow::CheckMessage(void)
  121. {
  122.   struct IntuiMessage *imsg;
  123.   OW_Event result=OW_None;
  124.  
  125.   if ((imsg = (struct IntuiMessage*)GetMsg(this->window->UserPort)) != NULL)
  126.   {
  127.     result = ParseMessage(imsg);
  128.     ReplyMsg((struct Message*)imsg);
  129.   }
  130.   return result;
  131. }
  132.  
  133.  
  134.  
  135. // Wait for a new message.
  136. OWindow::OW_Event
  137. OWindow::WaitMessage(void)
  138. {
  139.     struct IntuiMessage *imsg;
  140.     OW_Event result=OW_None;
  141.  
  142.     if (WaitPort(this->window->UserPort) != NULL)
  143.     {
  144.         if ((imsg = (struct IntuiMessage*)GetMsg(this->window->UserPort)) != NULL)
  145.         {
  146.             result = ParseMessage(imsg);
  147.             ReplyMsg((struct Message*)imsg);
  148.         }
  149.     }
  150.  
  151.     return result;
  152. }
  153.  
  154.  
  155.  
  156.